package com.bcts.rrh.drawingboard;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;


import com.github.mummyding.colorpickerdialog.ColorPickerDialog;
import com.github.mummyding.colorpickerdialog.OnColorChangedListener;

import java.util.ArrayList;


public class MainActivity extends Activity {
    MyView myView;//3D画板
    MySurfaceView mySurfaceView;//2D画板
    testView testView;//测试画板
    testView1 testView1;
    //private static int ViewType=3;//两种模式，2D模式
    ArrayList<ImageView> btnlist_2d=new ArrayList<ImageView>();//2D按钮集合
    ArrayList<ImageView> btnlist_3d=new ArrayList<ImageView>();//3D按钮集合
    //ArrayList<ImageView> btnlist_operate=new ArrayList<ImageView>();//操作按钮集合
    ImageView btn_3d;//切换到3D的按钮
    static ImageView btn_stroke;//画笔
    ImageView btn_move;//移动按钮
    ImageView btn_rotate;//旋转按钮
    ImageView btn_zoom;//缩放按钮
    ImageView btn_eraser;//橡皮檫
    ImageView btn_empty;//垃圾桶
    ImageView btn_color;//颜色按钮
    ImageView btn_fill;//填充按钮
    ImageView btn_line;//直线
    ImageView btn_circle;//圆
    ImageView btn_triangle;//三角形
    ImageView btn_rectangle;//矩形
    ImageView btn_parallelogram;//平行四边形
    ImageView btn_close;//关闭按钮

    //3D按钮
    ImageView btn_drawball;//球
    ImageView btn_drawcube;//立方体
    ImageView btn_drawhalfsphere;//半球
    ImageView btn_drawcone;//圆锥
    ImageView btn_drawrhombohedral;//四菱锥
    ImageView btn_drawcylinder;//圆柱体

    //纹理按钮
    ImageView btn_texture1;
    ImageView btn_texture2;
    ImageView btn_texture3;

    //背景图片的选择
    Spinner bgspinner;
    //页面按钮
    TextView pagetxt;//当前第几页的显示
    ImageView btn_creatpage;//创建新页面
    ImageView btn_deletepage;//删除当前页
    ImageView btn_backpg;//向上翻页
    ImageView btn_downpg;//向下翻页
    LinearLayout li;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        li=(LinearLayout)this.findViewById(R.id.myview_line);//获取线性布局的引用
        testView1=new testView1(this);
        myView=new MyView(this);
        myView.requestFocus();//获取焦点
        myView.setFocusableInTouchMode(true);
        mySurfaceView=new MySurfaceView(this);
        mySurfaceView.requestFocus();//获取焦点
        mySurfaceView.setFocusableInTouchMode(true);
        testView=new testView(this);
        testView.requestFocus();//获取焦点
        testView.setFocusableInTouchMode(true);
        li.addView(myView);

        InitBtn();//按钮的初始化
        showBtn(btn_stroke);//初始状态显示画笔
        btn_line.setOnClickListener(new View.OnClickListener() {//直线按钮点击事件
            @Override
            public void onClick(View v) {
                //mySurfaceView.setMode(mySurfaceView.STROKE_TYPE_LINE);//设置画直线模式
                myView.setMode(myView.STROKE_TYPE_LINE);
                showBtn(btn_line);
            }
        });
        btn_circle.setOnClickListener(new View.OnClickListener() {//画圆按钮点击事件
            @Override
            public void onClick(View v) {
                myView.setMode(myView.STROKE_TYPE_CIRCLE);
                showBtn(btn_circle);
            }
        });
        btn_triangle.setOnClickListener(new View.OnClickListener() {//设置画三角形模式
            @Override
            public void onClick(View v) {
                myView.setMode(myView.STROKE_TYPE_triangle);
                showBtn(btn_triangle);
            }
        });
        btn_rectangle.setOnClickListener(new View.OnClickListener() {//画矩形按钮点击事件
            @Override
            public void onClick(View v) {
                myView.setMode(myView.STROKE_TYPE_RECTANGLE);
                showBtn(btn_rectangle);
            }
        });
        btn_parallelogram.setOnClickListener(new View.OnClickListener() {//画矩形按钮点击事件
            @Override
            public void onClick(View v) {
                myView.setMode(myView.STROKE_TYPE_Parallelogram);
                showBtn(btn_parallelogram);
            }
        });
        btn_stroke.setOnClickListener(new View.OnClickListener() {//画笔按钮的点击事件
            @Override
            public void onClick(View view) {
                myView.setMode(myView.STROKE_TYPE_DRAW);//设置为写字模式
                showBtn(btn_stroke);
            }
        });

        btn_move.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.MOVE);
                showBtn(btn_move);
            }
        });
        btn_rotate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.ROTATE);
                showBtn(btn_rotate);
            }
        });
        btn_zoom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.ZOOM);//设置为3D选择模式
                showBtn(btn_zoom);

            }
        });
        btn_fill.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.FILL);//设置为填充模式
                showBtn(btn_fill);
            }
        });
        btn_eraser.setOnClickListener(new View.OnClickListener() {//橡皮檫按钮的点击事件
            @Override
            public void onClick(View view) {
                myView.setMode(myView.STROKE_TYPE_ERASER);//设置为橡皮擦模式
                showBtn(btn_eraser);
            }
        });
        btn_empty.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myView.clearall();
            }
        });
        btn_close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.finish();
                //System.exit(0);//正常退出App
            }
        });
        btn_color.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                opeAdvancenDialog();
            }
        });
        btn_drawball.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//画球的点击事件
                myView.setMode(myView.Drawball);//设置为画球模式
                showBtn(btn_drawball);
            }
        });
        btn_drawcube.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.Drawcube);//设置为画立方体模式
                showBtn(btn_drawcube);
            }
        });
        btn_drawhalfsphere.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.Drawhalfsphere);//设置为画半球模式
                showBtn(btn_drawhalfsphere);
            }
        });
        btn_drawcone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.Drawcone);//设置为画圆锥模式
                showBtn(btn_drawcone);
            }
        });
        btn_drawrhombohedral.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.Drawrhombohedral);//设置为画四菱锥模式
                showBtn(btn_drawrhombohedral);
            }
        });
        btn_drawcylinder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.Drawcylinder);//设置为画四菱锥模式
                showBtn(btn_drawcylinder);
            }
        });
        btn_texture1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.texture1);//设置为画四菱锥模式

            }
        });
        btn_texture2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.texture2);//设置为画四菱锥模式
            }
        });
        btn_texture3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myView.setMode(myView.texture3);//设置为画四菱锥模式
            }
        });
        bgspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String[] bgstr=getResources().getStringArray(R.array.spingarr);
                myView.setBgImg(bgstr[position]);
                myView.setColor(Color.BLACK);
                //Toast.makeText(MainActivity.this,"你选择的是"+bgstr[position],Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        //创建新页面
        btn_creatpage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int pagesize=myView.createpage();
                pagetxt.setText("当前页面 "+pagesize+"/"+pagesize);
            }
        });
        //删除当前页
        btn_deletepage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int[] pageinfo=myView.deletepage();
                if(pageinfo[0]==1){
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }
                else {
                    Toast.makeText(MainActivity.this,"删除失败只有一页不允许删除",Toast.LENGTH_SHORT).show();
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }

            }
        });
        //向上翻页
        btn_backpg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int[] pageinfo=myView.backpage();
                if(pageinfo[0]==1){//成功
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }
                else {
                    Toast.makeText(MainActivity.this,"当前页是首页",Toast.LENGTH_SHORT).show();
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }

            }
        });
        btn_downpg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int[] pageinfo=myView.uppage();
                if(pageinfo[0]==1){//成功
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }
                else {
                    Toast.makeText(MainActivity.this,"当前页是最后一页",Toast.LENGTH_SHORT).show();
                    pagetxt.setText("当前页面 "+pageinfo[1]+"/"+pageinfo[2]);
                }

            }
        });
    }

    private void InitBtn() {
        //2D按钮初始化
        //myView=(MyView)findViewById(R.id.myview);

        btn_eraser=(ImageView)findViewById(R.id.btn_eraser) ;
        btn_empty=(ImageView)findViewById(R.id.btn_empty);
        btn_stroke=(ImageView)findViewById(R.id.btn_stroke) ;
        btn_move=(ImageView)findViewById(R.id.btn_move);
        btn_rotate=(ImageView)findViewById(R.id.btn_rotate);
        btn_zoom=(ImageView)findViewById(R.id.btn_zoom);
        btn_color = (ImageView) findViewById(R.id.btn_color);
        btn_fill=(ImageView)findViewById(R.id.btn_fill);
        btn_line=(ImageView)findViewById(R.id.btn_line);
        btn_circle=(ImageView)findViewById(R.id.btn_circle);
        btn_triangle=(ImageView)findViewById(R.id.btn_triangle);
        btn_rectangle=(ImageView)findViewById(R.id.btn_rectangle);
        btn_parallelogram=(ImageView)findViewById(R.id.btn_parallelogram);
        btn_close=(ImageView)findViewById(R.id.btn_close);

        btnlist_2d.add(btn_stroke);
        btnlist_2d.add(btn_line);
        btnlist_2d.add(btn_circle);
        btnlist_2d.add(btn_rectangle);

        //3D按钮初始化
        btn_drawball=(ImageView)findViewById(R.id.btn_drawball);//球
        btn_drawcube=(ImageView)findViewById(R.id.btn_drawcube);//立方体
        btn_drawhalfsphere=(ImageView)findViewById(R.id.btn_drawhalfsphere);//半球
        btn_drawcone=(ImageView)findViewById(R.id.btn_drawcone);//圆锥
        btn_drawrhombohedral=(ImageView)findViewById(R.id.btn_drawrhombohedral);//四菱锥
        btn_drawcylinder=(ImageView)findViewById(R.id.btn_drawcylinder);//圆柱体

        //纹理按钮初始化
        btn_texture1=(ImageView)findViewById(R.id.btn_texture1);//纹理1
        btn_texture2=(ImageView)findViewById(R.id.btn_texture2);//纹理1
        btn_texture3=(ImageView)findViewById(R.id.btn_texture3);//纹理1

        //背景图片的初始化
        bgspinner=(Spinner)findViewById(R.id.bgspinner);
        bgspinner.setSelection(0, false);//设置初始化的时候不执行
        //页面按钮的初始化
        pagetxt=(TextView)findViewById(R.id.pagetxt);//当前第几页的显示
        btn_creatpage=(ImageView)findViewById(R.id.btn_creatpage);//创建新页面
        btn_deletepage=(ImageView)findViewById(R.id.btn_deletepage);//删除当前页
        btn_backpg=(ImageView)findViewById(R.id.btn_backpg);//向上翻页
        btn_downpg=(ImageView)findViewById(R.id.btn_downpg);//向下翻页
    }

    /**
     * GL要重写的方法
     */
    @Override
    protected void onPause() {
        super.onPause();
        myView.onPause();
        //testView.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        myView.onResume();
        //testView.onResume();
    }

    private void opeAdvancenDialog() {
        int[] colors = new int[]{Color.YELLOW, Color.BLACK, Color.BLUE, Color.GRAY,
                Color.GREEN, Color.CYAN, Color.RED, Color.DKGRAY, Color.LTGRAY, Color.MAGENTA,
                Color.rgb(100, 22, 33),Color.rgb(255,140,0), Color.rgb(82, 182, 2), Color.rgb(122, 32, 12), Color.rgb(82, 12, 2),
                Color.rgb(89, 23, 200), Color.rgb(13, 222, 23), Color.rgb(222, 22, 2)};
        final ColorPickerDialog dialog =
                new ColorPickerDialog(this, colors)
                        .setDismissAfterClick(true)
                        .setTitle("画笔颜色")
                        .setCheckedColor(Color.WHITE)
                        .setOnColorChangedListener(new OnColorChangedListener() {
                            @Override
                            public void onColorChanged(int newColor) {
                                // do something here
                                //Constants.penColor=newColor;
                                myView.setColor(newColor);
                                //Toast.makeText(getApplicationContext(), "Color " + newColor, Toast.LENGTH_SHORT).show();
                            }
                        })
                        .build(6)
                        .show();
    }

    private void showBtn(ImageView iv) {
        btn_eraser.setAlpha(0.4f);
        btn_stroke.setAlpha(0.4f);
        btn_fill.setAlpha(0.4f);
        btn_line.setAlpha(0.4f);
        btn_circle.setAlpha(0.4f);
        btn_triangle.setAlpha(0.4f);
        btn_rectangle.setAlpha(0.4f);
        btn_parallelogram.setAlpha(0.4f);
        btn_drawball.setAlpha(0.4f);//球
        btn_drawcube.setAlpha(0.4f);//立方体
        btn_drawhalfsphere.setAlpha(0.4f);//半球
        btn_drawcone.setAlpha(0.4f);//圆锥
        btn_drawrhombohedral.setAlpha(0.4f);//四菱锥
        btn_drawcylinder.setAlpha(0.4f);//圆柱体
        btn_move.setAlpha(0.4f);//移动按钮
        btn_rotate.setAlpha(0.4f);//旋转按钮
        btn_zoom.setAlpha(0.4f);//缩放按钮
        //iv.setBackgroundColor(Color.GREEN);
        iv.setAlpha(1f);
    }

    public static void clickbtnstroke(){
        btn_stroke.performClick();
    }
}
